package com;

import jdk.nashorn.internal.ir.CallNode;

/**
 * 模板方法模式（Template Method）：
 * 定义一个操作中的算法的骨架，而将一些可变部分的实现延迟到子类中。
 * 模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤
 *
 *
 * 备注：模板方法模式的精髓之处在于定义一个算法骨架，也就是把共有部分抽象出来，这对未来底层框架设计非常有用
 *
 * 举例：
 */
public class TemplateMethod {
    public static void main(String[] args) {
        UserManager userManager=new UserManager();
        userManager.action("admin","add");
        userManager.action("user","del");
    }


}
 abstract  class  BaseManager{
    public void action(String name,String method){
        if("admin".equals(name)){
            execute(method);
        }else {
            System.out.println("您没有该操作权限,请联系管理员");
        }
    }
    public abstract void execute(String method);
 }

 class UserManager extends BaseManager{
    //用户是否登录的验证
     //验证成功后才可以执行以下操作
     @Override
     public void execute(String method) {
         if ("add".equals(method)){
             System.out.println("执行了添加操作");
         }else if ("del".equals(method)){
             System.out.println("执行了删除操作");
         }else {
             System.out.println("执行了其他操作");
         }
     }
 }